package com.alibaba.citrus.ots.platform.enhance.repository;

import com.alibaba.citrus.ots.platform.enhance.repository.model.diff.activity.QueryActivityTermParam;
import com.alibaba.citrus.ots.platform.enhance.repository.model.diff.activity.QueryActivityUseRecordParam;
import com.alibaba.lattice2.epoch.sdk.model.Result;
import com.epoch.app.otsforecastsales.domian.activityterm.model.ActivityTerm;
import com.epoch.app.otsplatformenhance.model.dto.ActivityDiffCheckRequest;
import com.epoch.app.otspricecenter.sdo.ActivityTermSDO;
import com.epoch.app.otspricecenter.sdo.ActivityUseRecordRelationSDO;

import java.util.List;
import java.util.Set;

/**
 * @author: qiaojiange
 * @create: 2022/01/18
 * @Description 活动查询 repository
 */
public interface ActivityQueryRepository {


    /**
     * 查询活动使用记录
     * @param useRecordDTO 活动使用记录查询参数
     * @return 活动记录列表
     */
    Result<List<ActivityUseRecordRelationSDO>> queryActivityUseRecord(QueryActivityUseRecordParam useRecordDTO);


    /**
     * 根据子单批量查询活动使用记录
     * @param queryActivityUseRecordParam
     * @return
     */
    Result<List<ActivityUseRecordRelationSDO>> queryListByForecastSubOrderIds(QueryActivityUseRecordParam queryActivityUseRecordParam);

    /**
     * 根据活动类型过滤活动号
     * @param queryActivityUseRecordDTO
     * @return
     */
    Result<List<String>> filterActivityIdsByActivityFacadeCode(QueryActivityUseRecordParam queryActivityUseRecordDTO);



    /**
     * 查询更新的活动的列表数据
     * @param request 查询活动 term 列表请求
     * @return 活动 termSDO 列表
     */
    Result<List<ActivityTermSDO>> queryModifiedActivityTermList(ActivityDiffCheckRequest request);

    /**
     * 查询活动使用记录
     * @param param 查询活动使用记录参数
     * @return 活动使用列表
     */
    Result<List<ActivityUseRecordRelationSDO>> queryActivityUseRecordListByActivityTermId(QueryActivityUseRecordParam param);


    /**
     * 查询活动明细
     * @param param
     * @return
     */
    Result<ActivityTermSDO> queryActivityTerm(QueryActivityTermParam param);

    /**
     * 根据活动项目号查询活动号
     * @param activityTermIds
     * @return
     */
    List<ActivityTerm> queryActivityIdsByActivityTermIds(Set<String> activityTermIds);
}
